1. Field of the Invention
The present invention relates to the field of distributed computing and in particular, to apparatus, systems, and methods to facilitate cross-cloud migration and deployment of cloud-based software including virtual machine images.
2. Description of Related Art
The performance of computing applications may often be increased by distributing the computational workload across nodes in a networked cluster of computers. A physical networked cluster of computers with attendant software facilitating virtualization is often referred to as a “cloud” or “cloud infrastructure” or simply an infrastructure. The software layer permits the underlying physical hardware associated with clouds, which can include servers, memory, storage, and network resources, to be viewed as virtualized units. These virtualized units represent some fraction of the underlying computing hardware or resources supported by the cloud infrastructure. Therefore, from a logical perspective, clouds may be viewed as a collection of virtual machines (“VMs”). Typically, a cloud may provide a variety of VM types with different computing (CPU), memory, storage, networking, and Operating System (OS) options.
Clouds, thus, may be viewed as services that provide access to infrastructure remotely, including compute, storage and network resources, so that the resources can be reserved, provisioned, accessed and released programmatically. For example, programmatic interfaces such as Application Programming Interfaces (APIs), System Development Kits (SDKs), Web Services, etc. may be used to access resources made available by clouds remotely over a wide-area network (WAN). For example, in publicly available clouds or “public clouds”, these resources can be accessed programmatically over the Internet and are made available as VMs on a pay-per-use basis. On the other hand, organizations may have private clouds for use by employees or customers within an enterprise's data center.
VMs are typically software implementations of a computer. VMs often provide a complete system platform, which may also support the execution of a complete operating system by the VM in addition to one or more applications. VMs may be instantiated on clouds using images, which are typically filesystem images, which include an operating system, application servers and/or application(s) to be executed by the VM, data, and a cloud specific portion. The cloud specific portion of the image may include, for example, cloud specific configuration settings for configuration of storage resources, compute resources, security, access rights, etc for the cloud on which the VM is being instantiated.
In addition, each cloud provider may use proprietary image formats for virtual machine images. Further, each cloud may have differing cloud-specific bootstrapping and management mechanisms as part of the image. These bootstrapping mechanisms may specify initialization and other actions to be taken at boot time when the VM is instantiated.
For users who deploy or desire to deploy one or more applications on multiple clouds, the process of migrating images between clouds and/or creating images tailored to each cloud on which an application is being deployed can be time consuming, resource intensive, and error prone. In addition, users may often lack information about how the image was initially setup and/or any image related application configuration, thereby making it difficult to recreate a functionally equivalent image on a different cloud. Therefore, cost, time and expense may be significant impediments to multi-cloud deployment of applications and/or migrating applications between clouds, thereby effectively creating “cloud lock-in”—where the user is locked to a specific cloud provider.
Thus, there is a need for systems, methods, and apparatus that facilitate the deployment and migration of application between clouds while maintaining functional equivalence.